1. Field of the Invention
This invention relates to a computer which contains read only memory (xe2x80x9cROMxe2x80x9d) based executable instructions which minimize the amount of time needed to initialize power to small computer system interface (xe2x80x9cSCSIxe2x80x9d) devices by employing SCSI controllers which support a fast spin-up mode within their inquiry page and, in response to a start spin-up command, immediately release control of the SCSI bus to other SCSI disk drives to allow a controlled number of SCSI disk drives to concurrently spin-up.
2. Description of the Related Art
SCSI is a well-known term, and is generally referred to as a system-level interface that provides an expansion bus onto which SCSI devices can be coupled. SCSI bus protocol beneficially allows exchange of data among two SCSI devices without the intervention of the host computer processor. SCSI-I architecture allows up to seven SCSI devices to be coupled onto the SCSI bus and linked to a single SCSI port, or SCSI adapter. A newer SCSI-II standard allows an increase in addressing of up to fifteen SCSI devices coupled to a single SCSI adapter via a single SCSI bus. Thus, instead of using an 8-bit bus, SCSI-II uses either 16 or 32 data lines, wherein each line is dedicated to a specific SCSI initiator and SCSI target.
There may be numerous types of SCSI devices which can operate as a peripheral device linked to a computer system. For example, there are tape drives or hard disk drives which operate from the standard SCSI bus protocol, and which are compatible with personal computers or network servers which employ numerous SCSI adapters and associated SCSI devices. In computers which place an emphasis on massive storage devices, multiple SCSI hard disk drives may be contained within a single computer chassis. For example, modem servers may utilize multiple hard disk drives and, due to the performance benefit of SCSI, most of those servers employ SCSI hard disk drives and/or tape drives.
The electromechanical motors which drive SCSI devices consume a greater amount of power and/or current when they are first turned on. This means that the initial power consumption is quite large relative to subsequent steady state power and/or current. When a SCSI disk drive is powered up, surge current spikes are caused by inrush current required by the disk drive while its power filter capacitors are charging and during the initial xe2x80x9cspin-upxe2x80x9d of its drive motor. SCSI disk drives typically share a common power supply provided throughout the SCSI bus. Inrush current can therefor cause the common power supply to drop out of regulation, thereby causing a voltage spike and possibly degrading data being transferred by other disk drives sharing the SCSI bus. It is for this reason that initial spin-up current to the disk drives must be carefully monitored to prevent data transfer errors or to prevent current draw from exceeding the maximum allowable current draw (i.e., xe2x80x9cbudgetxe2x80x9d) of the computer system. In an effort to control current draw during spin-up, conventional SCSI protocol provides for sequential spin-up of multiple SCSI devices, whereby two SCSI devices are never spun-up at the same time.
A conventional spin-up process involves applying an initial amount of power to activate the electromechanical motor. That spin-up power [in] is quantified as an amount needed to bring the electromechanical motor from a standstill to a steady state rotational amount. Once steady state rotation is achieved, the current spike on the common power supply is reduced so that another disk drive can now be spun-up. By sequentially applying power to SCSI devices during initialization of the computer, undue spiking on the common power supply is minimized and brought within tolerable limits.
An unfortunate aspect of sequentially initializing a SCSI subsystem is the exorbitant amount of time spent waiting for SCSI devices to spin-up. As SCSI hard drives become larger and as computer systems (e.g., servers) support more drives, the problem is compounded. For example, a large portion of ROM power-on self test (xe2x80x9cPOSTxe2x80x9d) time is spent initializing the SCSI subsystem which, in instances where a server is employed, initialization can take possibly 30 minutes or longer to spin-up all the drives in sequence and complete the ROM POST.
An improvement is needed in the process of initializing power to SCSI devices. That improvement must be one which can minimize the time needed to spin-up multiple electromechanical SCSI device motors during the reset or boot sequence of a computer. If improvements to the spin-up time can be achieved, operators of large server systems will be less likely to become impatient and contact the manufacturer falsely believing an error has occurred during boot-up.
The problem outlined above are in large part solved by a computer hereof which employs a fast spin-up routine. The computer thereby includes at least one SCSI bus and multiple SCSI devices coupled to that bus. Depending on an acceptable level of current draw, many of the SCSI devices can be spun-up concurrently. This means that a subset of SCSI devices which support fast spin-up can receive spin-up power and/or current at the same time. As a result, that set of SCSI devices can thereby conclude their spin-up rather quickly, thus allowing additional SCSI devices to be spun-up concurrently.
The present computer includes system memory, and further includes ROM. Within the architecture of the ROM are firmware modifications employed within the SCSI device controller and the host system itself. Placed within the SCSI device firmware are three new fields implemented within a SCSI inquiry page. The three new fields include bits indicating fast spin-up, maximum spin-up current, and optimal idle time. Fast spin-up indicates whether the SCSI device associated with the inquiry page supports fast spin-up (i.e., whether mastership of the SCSI bus can be immediately released after spin-up is initiated). Fast spin-up can be set by a single bit such that if the fast spin-up bit is present (or set) the SCSI bus initiator will know to release mastership immediately after sending a command to initiate start-up (i.e., the start unit command). The maximum spin-up current specifies the maximum amount of current consumed by that particular SCSI device during a spin-up procedure. Multiple bits are used to specify the maximum spin-up current in, for example, one-tenth ampere increments. Optimal idle time specifies the amount of time needed to complete spin-up and achieve steady state power draw without involving any error recovery. Similar to the maximum spin-up current, optimal idle time can be specified by multiple bits used to indicate time increments (e.g., one-tenth of a second increments).
The system memory ROM within the host computer can then scan the SCSI subsystem for drives which support the fast spin-up feature. Essentially, the system ROM will examine for the fast spin-up bit within the inquiry page of each SCSI device. The SCSI devices which have the fast spin-up bit set are then placed in a category separate from SCSI devices which do not support fast spin-up (i.e., legacy devices). Knowing the devices which support fast spin-up, system ROM will then start spinning a device in the fast spin-up category using a start unit command and setting an immediate bit within the start unit command. The immediate bit will release mastership of the SCSI bus so that another start unit command can be issued to another SCSI device to begin its spin-up. This process continues until the computer system""s current budget is reached. At this point, the system ROM will wait for each device""s optimal idle time to elapse before reclaiming the current allotment for that particular SCSI drive. Reclaiming current allotment involves subtracting the current associated with that drive from the accumulated current amount used by the other drives whose optimal idle time has not elapsed. Based on the cumulative current consumed by the devices which are currently undergoing spin-up, the cumulative current value is compared to the system budget to determine if another drive which support fast spin-up can be initiated. After all fast spin-up devices have completed [spun-up] spin-up, any remaining legacy SCSI device can then be spun-up one-by-one, according to conventional legacy spin-up routines.
According to one embodiment, a computer system is provided. The computer system includes a SCSI bus and a plurality of SCSI disk drives coupled to the SCSI bus. A SCSI adapter is coupled between a peripheral bus and a SCSI bus. According to one example, the peripheral bus may include a peripheral component interface (PCI) bus. The SCSI adapter may initiate and maintain spin-up power concurrently to a first set of the plurality of SCSI disk drives. Code contained within the computer and specifically within system memory ROM of the computer, monitors spin-up current and spin-up time attributed to each of the first set of SCSI disk drives. The code within system ROM can then apply spin-up power to another of the plurality of SCSI disk drives after the spin-up time of at least one of the first set of SCSI disk drives has elapsed and the cumulative spin-up current attributed to the current and to-be-spun devices will consume less power than a pre-defined current budget of the computer. The first set of SCSI disk drives (i.e., fast spin-up devices) are responsive to a start unit command and immediate bit sent from the SCSI initiator to obtain successive ownership of the SCSI bus and initiate application of the spin-up power to at least one device within the first set before spin-up power to at least one of the first set of SCSI disk drives has ended.
According to another embodiment, a SCSI device is provided. The SCSI device includes any electromechanical SCSI-based device such as, e.g., a disk drive or tape drive. The SCSI device comprises an inquiry page responsive to an inquiry request command issued to the SCSI device. The inquiry page is established within firmware of the SCSI controller or SCSI device and contains a bit indicating if the SCSI device supports a command to release control of a SCSI bus to which the SCSI device is connected before the SCSI device completes an initial power-up routine. According to a preferred example, the power-up routine is a spin-up routine and involves applying transitory power to initiate rotation of an electromechanical device. The spin-up power consumed by the device is greater than that after which the spin-up is completed and during steady state movement of the electromechanical device.
According to yet another embodiment, a method is provided for reducing spin-up time of a plurality of SCSI disk drives. The method includes reading an inquiry page associated with each of the plurality of SCSI disk drives and categorizing the plurality of SCSI disk drives into a first and second category of SCSI disk drives. The SCSI disk drives fall within the first category if a fast spin-up bit is set within its associated inquiry page. Spin-up current is then imparted and maintained to each of the first set within the first category of SCSI disk drives. Thereafter, spin-up current can be applied to additional SCSI disk drives within the first category if a cumulative spin-up current attributed to the first set plus the added disk drive is less than a pre-defined amount or if a spin-up time attributed to any of the first set of SCSI disk drives elapses. The second category of SCSI disk drives, or legacy disk drives, can receive spin-up current either (i) after all the fast spin-up SCSI disk drives have completed spinning-up or (ii) after all of the fast spin-up SCSI disk drives have completed spin-up except for those having a cumulative spin-up current less than a pre-defined amount.